diffeq_runge_kutta Module



Derived Types

type, public, extends(single_step_integrator) ::  runge_kutta_23

The Bogacki-Shampine integrator (3rd order with an embedded 2nd order used for error estimation).

Type-Bound Procedures

procedure, public :: append_to_buffer => oi_append_to_buffer ..\..\

Appends the supplied solution point to the internal solution buffer.<\p>

procedure, public :: attempt_step => rk23_attempt_step ..\..\

Attempts an integration step for this integrator.<\p>

procedure, public :: clear_buffer => oi_clear_buffer ..\..\

Clears the contents of the buffer.<\p>

procedure, public :: compute_error_norm => oi_estimate_error ..\..\

Computes the norm of the scaled error estimate.<\p>

procedure, public :: estimate_inital_step_size => oi_initial_step ..\..\

Computes an estimate of an initial step size.<\p>

procedure, public :: estimate_next_step_size => oi_next_step ..\..\

Estimates the next step size.<\p>

procedure, public :: get_absolute_tolerance => oi_get_abs_tol ..\..\

Gets the absolute error tolerance.<\p>

procedure, public :: get_allow_overshoot => oi_get_allow_overshoot ..\..\

Gets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: get_is_fsal => rk23_get_is_fsal ..\..\

Gets a logical parameter stating if this is a first-same-as-last (FSAL) integrator.<\p>

procedure, public :: get_maximum_step_size => oi_get_max_step ..\..\

Gets the magnitude of the maximum allowed step size.<\p>

procedure, public :: get_minimum_step_size => oi_get_min_step ..\..\

Gets the magnitude of the minimum allowed step size.<\p>

procedure, public :: get_order => rk23_get_order ..\..\

Gets the order of the integrator.<\p>

procedure, public :: get_relative_tolerance => oi_get_abs_tol ..\..\

Gets the relative error tolerance.<\p>

procedure, public :: get_solution => oi_get_solution ..\..\

Returns the solution computed by the integrator.<\p>

procedure, public :: get_stage_count => rk23_get_stage_count ..\..\

Gets the stage count for this integrator.<\p>

procedure, public :: get_step_limit => oi_get_step_limit ..\..\

Gets the limit on the number of integration steps.<\p>

procedure, public :: get_step_size_control_parameter => oi_get_control_parameter ..\..\

Gets the step size PI control parameter.<\p>

procedure, public :: get_step_size_factor => oi_get_safety_factor ..\..\

Gets the step size safety factor.<\p>

procedure, public :: interpolate => rk23_interp ..\..\

Performs the interpolation.<\p>

procedure, public :: post_step_action => rk23_set_up_interp ..\..\

Sets up the interpolation process as the post-step action.<\p>

procedure, public :: pre_step_action => rk23_pre_step ..\..\

Performs any pre-step actions.<\p>

procedure, public :: set_absolute_tolerance => oi_set_abs_tol ..\..\

Sets the absolute error tolerance.<\p>

procedure, public :: set_allow_overshoot => oi_set_allow_overshoot ..\..\

Sets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: set_maximum_step_size => oi_set_max_step ..\..\

Sets the magnitude of the maximum allowed step size.<\p>

procedure, public :: set_minimum_step_size => oi_set_min_step ..\..\

Sets the magnitude of the minimum allowed step size.<\p>

procedure, public :: set_relative_tolerance => oi_set_abs_tol ..\..\

Sets the relative error tolerance.<\p>

procedure, public :: set_step_limit => oi_set_step_limit ..\..\

Sets the limit on the number of integration steps.<\p>

procedure, public :: set_step_size_control_parameter => oi_set_control_parameter ..\..\

Sets the step size PI control parameter.<\p>

procedure, public :: set_step_size_factor => oi_set_safety_factor ..\..\

Sets the step size safety factor.<\p>

procedure, public :: solve => ssi_ode_solver ..\..\

Solves the supplied system of ODE's.<\p>

type, public, extends(single_step_integrator) ::  runge_kutta_45

The Dormand-Prince, Runge-Kutta integrator (5th order, with an embedded 4th order used for error estimation).

Type-Bound Procedures

procedure, public :: append_to_buffer => oi_append_to_buffer ..\..\

Appends the supplied solution point to the internal solution buffer.<\p>

procedure, public :: attempt_step => rk45_attempt_step ..\..\

Attempts an integration step for this integrator.<\p>

procedure, public :: clear_buffer => oi_clear_buffer ..\..\

Clears the contents of the buffer.<\p>

procedure, public :: compute_error_norm => oi_estimate_error ..\..\

Computes the norm of the scaled error estimate.<\p>

procedure, public :: estimate_inital_step_size => oi_initial_step ..\..\

Computes an estimate of an initial step size.<\p>

procedure, public :: estimate_next_step_size => oi_next_step ..\..\

Estimates the next step size.<\p>

procedure, public :: get_absolute_tolerance => oi_get_abs_tol ..\..\

Gets the absolute error tolerance.<\p>

procedure, public :: get_allow_overshoot => oi_get_allow_overshoot ..\..\

Gets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: get_is_fsal => rk45_get_is_fsal ..\..\

Gets a logical parameter stating if this is a first-same-as-last (FSAL) integrator.<\p>

procedure, public :: get_maximum_step_size => oi_get_max_step ..\..\

Gets the magnitude of the maximum allowed step size.<\p>

procedure, public :: get_minimum_step_size => oi_get_min_step ..\..\

Gets the magnitude of the minimum allowed step size.<\p>

procedure, public :: get_order => rk45_get_order ..\..\

Gets the order of the integrator.<\p>

procedure, public :: get_relative_tolerance => oi_get_abs_tol ..\..\

Gets the relative error tolerance.<\p>

procedure, public :: get_solution => oi_get_solution ..\..\

Returns the solution computed by the integrator.<\p>

procedure, public :: get_stage_count => rk45_get_stage_count ..\..\

Gets the stage count for this integrator.<\p>

procedure, public :: get_step_limit => oi_get_step_limit ..\..\

Gets the limit on the number of integration steps.<\p>

procedure, public :: get_step_size_control_parameter => oi_get_control_parameter ..\..\

Gets the step size PI control parameter.<\p>

procedure, public :: get_step_size_factor => oi_get_safety_factor ..\..\

Gets the step size safety factor.<\p>

procedure, public :: interpolate => rk45_interp ..\..\

Performs the interpolation.<\p>

procedure, public :: post_step_action => rk45_set_up_interp ..\..\

Sets up the interpolation process as the post-step action.<\p>

procedure, public :: pre_step_action => rk45_pre_step ..\..\

Performs any pre-step actions.<\p>

procedure, public :: set_absolute_tolerance => oi_set_abs_tol ..\..\

Sets the absolute error tolerance.<\p>

procedure, public :: set_allow_overshoot => oi_set_allow_overshoot ..\..\

Sets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: set_maximum_step_size => oi_set_max_step ..\..\

Sets the magnitude of the maximum allowed step size.<\p>

procedure, public :: set_minimum_step_size => oi_set_min_step ..\..\

Sets the magnitude of the minimum allowed step size.<\p>

procedure, public :: set_relative_tolerance => oi_set_abs_tol ..\..\

Sets the relative error tolerance.<\p>

procedure, public :: set_step_limit => oi_set_step_limit ..\..\

Sets the limit on the number of integration steps.<\p>

procedure, public :: set_step_size_control_parameter => oi_set_control_parameter ..\..\

Sets the step size PI control parameter.<\p>

procedure, public :: set_step_size_factor => oi_set_safety_factor ..\..\

Sets the step size safety factor.<\p>

procedure, public :: solve => ssi_ode_solver ..\..\

Solves the supplied system of ODE's.<\p>

type, public, extends(single_step_integrator) ::  runge_kutta_853

An 8th order Runge-Kutta integrator with embedded 5th and 3rd order solutions for error estimation.

Type-Bound Procedures

procedure, public :: append_to_buffer => oi_append_to_buffer ..\..\

Appends the supplied solution point to the internal solution buffer.<\p>

procedure, public :: attempt_step => rk853_attempt_step ..\..\

Attempts an integration step for this integrator.<\p>

procedure, public :: clear_buffer => oi_clear_buffer ..\..\

Clears the contents of the buffer.<\p>

procedure, public :: compute_error_norm => rk853_estimate_error ..\..\

Computes the norm of the scaled error estimate.<\p>

procedure, public :: estimate_inital_step_size => oi_initial_step ..\..\

Computes an estimate of an initial step size.<\p>

procedure, public :: estimate_next_step_size => oi_next_step ..\..\

Estimates the next step size.<\p>

procedure, public :: get_absolute_tolerance => oi_get_abs_tol ..\..\

Gets the absolute error tolerance.<\p>

procedure, public :: get_allow_overshoot => oi_get_allow_overshoot ..\..\

Gets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: get_is_fsal => rk853_get_is_fsal ..\..\

Gets a logical parameter stating if this is a first-same-as-last (FSAL) integrator.<\p>

procedure, public :: get_maximum_step_size => oi_get_max_step ..\..\

Gets the magnitude of the maximum allowed step size.<\p>

procedure, public :: get_minimum_step_size => oi_get_min_step ..\..\

Gets the magnitude of the minimum allowed step size.<\p>

procedure, public :: get_order => rk853_get_order ..\..\

Gets the order of the integrator.<\p>

procedure, public :: get_relative_tolerance => oi_get_abs_tol ..\..\

Gets the relative error tolerance.<\p>

procedure, public :: get_solution => oi_get_solution ..\..\

Returns the solution computed by the integrator.<\p>

procedure, public :: get_stage_count => rk853_get_stage_count ..\..\

Gets the stage count for this integrator.<\p>

procedure, public :: get_step_limit => oi_get_step_limit ..\..\

Gets the limit on the number of integration steps.<\p>

procedure, public :: get_step_size_control_parameter => oi_get_control_parameter ..\..\

Gets the step size PI control parameter.<\p>

procedure, public :: get_step_size_factor => oi_get_safety_factor ..\..\

Gets the step size safety factor.<\p>

procedure, public :: interpolate => rk853_interp ..\..\

Performs the interpolation.<\p>

procedure, public :: post_step_action => rk853_set_up_interp ..\..\

Sets up the interpolation process as the post-step action.<\p>

procedure, public :: pre_step_action => rk853_pre_step

Performs any pre-step actions.

Read more…
procedure, public :: set_absolute_tolerance => oi_set_abs_tol ..\..\

Sets the absolute error tolerance.<\p>

procedure, public :: set_allow_overshoot => oi_set_allow_overshoot ..\..\

Sets a value determining if the solver is allowed to overshoot the final value in the integration range.<\p>

procedure, public :: set_maximum_step_size => oi_set_max_step ..\..\

Sets the magnitude of the maximum allowed step size.<\p>

procedure, public :: set_minimum_step_size => oi_set_min_step ..\..\

Sets the magnitude of the minimum allowed step size.<\p>

procedure, public :: set_relative_tolerance => oi_set_abs_tol ..\..\

Sets the relative error tolerance.<\p>

procedure, public :: set_step_limit => oi_set_step_limit ..\..\

Sets the limit on the number of integration steps.<\p>

procedure, public :: set_step_size_control_parameter => oi_set_control_parameter ..\..\

Sets the step size PI control parameter.<\p>

procedure, public :: set_step_size_factor => oi_set_safety_factor ..\..\

Sets the step size safety factor.<\p>

procedure, public :: solve => ssi_ode_solver ..\..\

Solves the supplied system of ODE's.<\p>